# access mode

# r: read mode: 以只读方式打开文件, 如果文件不存在则报错
print("-------------------- file =  r ------------------------ ")
file = open("test.txt", "r")  # 以只读模式打开文件, 如果文件不存在则报错
print(file.read())
file.close()

# w: write mode: 以写入方式打开文件, 如果文件不存在则创建, 如果文件存在则清空内容
print("-------------------- file2  w ------------------------ ")
file2 = open("test-w.txt", "w")
file2.write("This is a test file in write mode.\n")
file2.close()


# +: read and write mode: 以读写方式打开文件, 如果文件不存在则创建, 如果文件存在则清空内容
# 使用 + 会影响文件的读写效率, 开发过程中更多时候会以 只读 或 只写 的方式打开文件

# r+ : read and write mode: 以读写方式打开文件, 如果文件不存在则
# w+ : read and write mode: 以读写方式打开文件, 如果文件不存在则创建, 如果文件存在则清空内容
print("-------------------- file3  w+ ------------------------ ")
file3 = open("test-rw.txt", "w+")
print(file3.read())
file3.write("This is a test file in read and write mode.\n")
print(file3.read())
file3.close()

print("-------------------- file4  a ------------------------ ")
file4 = open("test-a.txt", "a")
file4.write("1:This is a test file in append mode.\n")
file4.write("2:This is a test file in append mode.\n")
file4.close()

# 文件指针: 文件指针是一个指向文件中当前读写位置的指针, 可以通过 tell() 方法获取当前指针位置, 通过 seek() 方法设置指针位置


print("-------------------- file 5 ------------------------ ")
# tell() 方法: 获取当前文件指针位置
# seek(offset, whence):# 设置文件指针位置, 第一个参数为偏移量, 第二个参数为参考位置, 0表示文件开头, 1表示当前位置, 2表示文件结尾
file5 = open("test-5.txt", "w+")
file5.write("Hello Python!")
pos = file5.tell()
print(f"Current file pointer position: {pos}")  # Current file pointer position: 13
file5.seek(0,0) # 将指针移动到文件开头
print(file5.read()) # Hello Python!
pos2 = file5.tell() #
print(f"修改后的指针位置: {pos2}")  # Current file pointer position: 13
file5.seek(0,0) # 将指针移动到文件开头
print(file5.read())

file5.close()
